package com.jqq.enumeration_;

/**
 * @author 姬倩倩
 * @version 1.0
 * 演示Enum类的各种方法的使用
 */
public class EnumMethod {
    public static void main(String[] args) {
        Season4 summer = Season4.SUMMER;
        //输出枚举对象的名字
        System.out.println(summer.name());
        //输出的是该枚举对象的次序/编号  枚举类中定义的第几个常量对象 1
        System.out.println(summer.ordinal());
        //返回Season4枚举类的所有常量对象，为Season4[]数组形式
        Season4[] values = Season4.values();
        for (Season4 value : values) {//增强for循环
            System.out.println(value);
        }
//        Season4{name='春天', desc='温暖'}
//        Season4{name='夏天', desc='炎热'}

        //valueOf: 将字符串转换成枚举对象，要求字符串必须为已有的常量名，
        // 否则报异常 也就是必须从已经定义的常量中找
        Season4 spring1 = Season4.valueOf("SPRING");
        System.out.println("spring1=" + spring1);
//        spring1=Season4{name='春天', desc='温暖'}

        //compareTo比较两个枚举常量，比较的是编号
        //将Season4.SPRING枚举对象的编号和Season4.SUMMER对象的编号比较
        System.out.println(Season4.SPRING.compareTo(Season4.SUMMER));//-1
//        return self.ordinal - other.ordinal;
        //用spring编号0-summer编号1 = -1

    }
}
enum Season4{
    //如果使用了enum来实现枚举类
    //1. 使用关键字enum 替代 class
    //2. public final static Season2 SPRING= new Season2("春天","温暖");
    //   直接使用SPRING("春天", "温暖");替代
    //   常量名(实参列表)
    //3. 如果有多个常量(对象)，使用 , 间隔
    //4. 要求将定义的常量对象写在最前面
    SPRING("春天", "温暖"),
    SUMMER("夏天","炎热");
    private String name;
    private String desc;

    Season4(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }


    @Override
    public String toString() {
        return "Season4{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}